package interfaces;

import java.util.Collection;

/**
 * Interface for communicating with a table
 * @author Don
 *
 */
public interface ITable {

	/**
	 * @return a collection of all ICups within this table
	 */
	public Collection<ICup> getCups();
	
	/**
	 * Performs a hard reset on the table
	 * @return
	 * 		true if this command is likely to succeed
	 */
	public boolean resetTable();
	
	/**
	 * Adds a table listener to the table
	 * @param listener 
	 * 		table listener to be added to the listener set if it is not already present
	 */
	public void addTableListener(ITableListener listener);
	
	/**
	 * Removes the table listener from this table, if it is present
	 * @param listener
	 * 		listener to be removed
	 */
	public void removeTableListener(ITableListener listener);
	
}
